home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / kcl / akcl / akcl1615.lha / mp / sparcdivul3.s < prev   
Text File  |  1991-03-19  |  4KB  |  280 lines

  1.         .seg "text"
  2.     .global _divul3
  3.  
  4. #define    SS0(label) \
  5.     addx    %o2,%o2,%o2;\
  6.     subcc    %o2,%o1,%o3;\
  7.     bcc    label;\
  8.     addxcc    %o0,%o0,%o0
  9.  
  10. #define    SS1(label) \
  11.     addx    %o3,%o3,%o3;\
  12.     subcc    %o3,%o1,%o2;\
  13.     bcc    label;\
  14.     addxcc    %o0,%o0,%o0
  15. _divul3: mov     %o2,%o4
  16.     ld      [%o2],%o2
  17.     subcc    %o2,%o1,%g0
  18.     blu    1f
  19.     addcc    %o1,%o1,%g0
  20.     mov    0x2f,%o0
  21.     call    _err,1
  22.     nop
  23. 1:    bcc    Lsmalldiv
  24.     andcc    %o1,1,%g0
  25.     be    Levendiv
  26.     srl    %o1,1,%o1
  27.     add    %o1,1,%o1
  28.     subcc    %o2,%o1,%o3
  29.     bcc    Lb01
  30.     addxcc    %o0,%o0,%o0
  31. La01:    SS0(Lb02)
  32. La02:    SS0(Lb03)
  33. La03:    SS0(Lb04)
  34. La04:    SS0(Lb05)
  35. La05:    SS0(Lb06)
  36. La06:    SS0(Lb07)
  37. La07:    SS0(Lb08)
  38. La08:    SS0(Lb09)
  39. La09:    SS0(Lb10)
  40. La10:    SS0(Lb11)
  41. La11:    SS0(Lb12)
  42. La12:    SS0(Lb13)
  43. La13:    SS0(Lb14)
  44. La14:    SS0(Lb15)
  45. La15:    SS0(Lb16)
  46. La16:    SS0(Lb17)
  47. La17:    SS0(Lb18)
  48. La18:    SS0(Lb19)
  49. La19:    SS0(Lb20)
  50. La20:    SS0(Lb21)
  51. La21:    SS0(Lb22)
  52. La22:    SS0(Lb23)
  53. La23:    SS0(Lb24)
  54. La24:    SS0(Lb25)
  55. La25:    SS0(Lb26)
  56. La26:    SS0(Lb27)
  57. La27:    SS0(Lb28)
  58. La28:    SS0(Lb29)
  59. La29:    SS0(Lb30)
  60. La30:    SS0(Lb31)
  61. La31:    SS0(Lb32)
  62. La32:    addx    %o2,%o2,%o2
  63.     xor    %o0,-1,%o0
  64.     add    %o1,%o1,%o1
  65.     sub    %o1,1,%o1
  66.     addcc    %o0,%o2,%o2
  67.     bcc    1f
  68.     subcc    %o2,%o1,%o3
  69.     subcc    %o3,%o1,%o2
  70.     bcs    2f
  71.     add    %o0,1,%o0
  72.     add    %o0,1,%o0
  73. 3:    retl
  74.     st    %o2,[%o4]
  75. 1:    bcs    3b
  76.     nop
  77.     add    %o0,1,%o0
  78. 2:    retl
  79.     st    %o3,[%o4]
  80.  
  81. Lb01:    SS1(La02)
  82. Lb02:    SS1(La03)
  83. Lb03:    SS1(La04)
  84. Lb04:    SS1(La05)
  85. Lb05:    SS1(La06)
  86. Lb06:    SS1(La07)
  87. Lb07:    SS1(La08)
  88. Lb08:    SS1(La09)
  89. Lb09:    SS1(La10)
  90. Lb10:    SS1(La11)
  91. Lb11:    SS1(La12)
  92. Lb12:    SS1(La13)
  93. Lb13:    SS1(La14)
  94. Lb14:    SS1(La15)
  95. Lb15:    SS1(La16)
  96. Lb16:    SS1(La17)
  97. Lb17:    SS1(La18)
  98. Lb18:    SS1(La19)
  99. Lb19:    SS1(La20)
  100. Lb20:    SS1(La21)
  101. Lb21:    SS1(La22)
  102. Lb22:    SS1(La23)
  103. Lb23:    SS1(La24)
  104. Lb24:    SS1(La25)
  105. Lb25:    SS1(La26)
  106. Lb26:    SS1(La27)
  107. Lb27:    SS1(La28)
  108. Lb28:    SS1(La29)
  109. Lb29:    SS1(La30)
  110. Lb30:    SS1(La31)
  111. Lb31:    SS1(La32)
  112. Lb32:    addx    %o3,%o3,%o2
  113.     xor    %o0,-1,%o0
  114.     add    %o1,%o1,%o1
  115.     sub    %o1,1,%o1
  116.     addcc    %o0,%o2,%o2
  117.     bcc    1f
  118.     subcc    %o2,%o1,%o3
  119.     subcc    %o3,%o1,%o2
  120.     bcs    2f
  121.     add    %o0,1,%o0
  122.     add    %o0,1,%o0
  123. 3:    retl
  124.     st    %o2,[%o4]
  125. 1:    bcs    3b
  126.     nop
  127.     add    %o0,1,%o0
  128. 2:    retl
  129.     st    %o3,[%o4]
  130.  
  131. Lsmalldiv:
  132.     addcc    %o0,%o0,%o0
  133. Lc00:    SS0(Ld01)
  134. Lc01:    SS0(Ld02)
  135. Lc02:    SS0(Ld03)
  136. Lc03:    SS0(Ld04)
  137. Lc04:    SS0(Ld05)
  138. Lc05:    SS0(Ld06)
  139. Lc06:    SS0(Ld07)
  140. Lc07:    SS0(Ld08)
  141. Lc08:    SS0(Ld09)
  142. Lc09:    SS0(Ld10)
  143. Lc10:    SS0(Ld11)
  144. Lc11:    SS0(Ld12)
  145. Lc12:    SS0(Ld13)
  146. Lc13:    SS0(Ld14)
  147. Lc14:    SS0(Ld15)
  148. Lc15:    SS0(Ld16)
  149. Lc16:    SS0(Ld17)
  150. Lc17:    SS0(Ld18)
  151. Lc18:    SS0(Ld19)
  152. Lc19:    SS0(Ld20)
  153. Lc20:    SS0(Ld21)
  154. Lc21:    SS0(Ld22)
  155. Lc22:    SS0(Ld23)
  156. Lc23:    SS0(Ld24)
  157. Lc24:    SS0(Ld25)
  158. Lc25:    SS0(Ld26)
  159. Lc26:    SS0(Ld27)
  160. Lc27:    SS0(Ld28)
  161. Lc28:    SS0(Ld29)
  162. Lc29:    SS0(Ld30)
  163. Lc30:    SS0(Ld31)
  164. Lc31:    SS0(Ld32)
  165. Lc32:    xor    %o0,-1,%o0
  166.     retl
  167.     st    %o2,[%o4]
  168.  
  169. Ld01:    SS1(Lc02)
  170. Ld02:    SS1(Lc03)
  171. Ld03:    SS1(Lc04)
  172. Ld04:    SS1(Lc05)
  173. Ld05:    SS1(Lc06)
  174. Ld06:    SS1(Lc07)
  175. Ld07:    SS1(Lc08)
  176. Ld08:    SS1(Lc09)
  177. Ld09:    SS1(Lc10)
  178. Ld10:    SS1(Lc11)
  179. Ld11:    SS1(Lc12)
  180. Ld12:    SS1(Lc13)
  181. Ld13:    SS1(Lc14)
  182. Ld14:    SS1(Lc15)
  183. Ld15:    SS1(Lc16)
  184. Ld16:    SS1(Lc17)
  185. Ld17:    SS1(Lc18)
  186. Ld18:    SS1(Lc19)
  187. Ld19:    SS1(Lc20)
  188. Ld20:    SS1(Lc21)
  189. Ld21:    SS1(Lc22)
  190. Ld22:    SS1(Lc23)
  191. Ld23:    SS1(Lc24)
  192. Ld24:    SS1(Lc25)
  193. Ld25:    SS1(Lc26)
  194. Ld26:    SS1(Lc27)
  195. Ld27:    SS1(Lc28)
  196. Ld28:    SS1(Lc29)
  197. Ld29:    SS1(Lc30)
  198. Ld30:    SS1(Lc31)
  199. Ld31:    SS1(Lc32)
  200. Ld32:    xor    %o0,-1,%o0
  201.     retl
  202.     st    %o3,[%o4]
  203.  
  204.  
  205. Levendiv:
  206.     subcc    %o2,%o1,%o3
  207.     bcc    Lf01
  208.     addxcc    %o0,%o0,%o0
  209. Le01:    SS0(Lf02)
  210. Le02:    SS0(Lf03)
  211. Le03:    SS0(Lf04)
  212. Le04:    SS0(Lf05)
  213. Le05:    SS0(Lf06)
  214. Le06:    SS0(Lf07)
  215. Le07:    SS0(Lf08)
  216. Le08:    SS0(Lf09)
  217. Le09:    SS0(Lf10)
  218. Le10:    SS0(Lf11)
  219. Le11:    SS0(Lf12)
  220. Le12:    SS0(Lf13)
  221. Le13:    SS0(Lf14)
  222. Le14:    SS0(Lf15)
  223. Le15:    SS0(Lf16)
  224. Le16:    SS0(Lf17)
  225. Le17:    SS0(Lf18)
  226. Le18:    SS0(Lf19)
  227. Le19:    SS0(Lf20)
  228. Le20:    SS0(Lf21)
  229. Le21:    SS0(Lf22)
  230. Le22:    SS0(Lf23)
  231. Le23:    SS0(Lf24)
  232. Le24:    SS0(Lf25)
  233. Le25:    SS0(Lf26)
  234. Le26:    SS0(Lf27)
  235. Le27:    SS0(Lf28)
  236. Le28:    SS0(Lf29)
  237. Le29:    SS0(Lf30)
  238. Le30:    SS0(Lf31)
  239. Le31:    SS0(Lf32)
  240. Le32:    addx    %o2,%o2,%o2
  241.     xor    %o0,-1,%o0
  242.     retl
  243.     st    %o2,[%o4]
  244.  
  245. Lf01:    SS1(Le02)
  246. Lf02:    SS1(Le03)
  247. Lf03:    SS1(Le04)
  248. Lf04:    SS1(Le05)
  249. Lf05:    SS1(Le06)
  250. Lf06:    SS1(Le07)
  251. Lf07:    SS1(Le08)
  252. Lf08:    SS1(Le09)
  253. Lf09:    SS1(Le10)
  254. Lf10:    SS1(Le11)
  255. Lf11:    SS1(Le12)
  256. Lf12:    SS1(Le13)
  257. Lf13:    SS1(Le14)
  258. Lf14:    SS1(Le15)
  259. Lf15:    SS1(Le16)
  260. Lf16:    SS1(Le17)
  261. Lf17:    SS1(Le18)
  262. Lf18:    SS1(Le19)
  263. Lf19:    SS1(Le20)
  264. Lf20:    SS1(Le21)
  265. Lf21:    SS1(Le22)
  266. Lf22:    SS1(Le23)
  267. Lf23:    SS1(Le24)
  268. Lf24:    SS1(Le25)
  269. Lf25:    SS1(Le26)
  270. Lf26:    SS1(Le27)
  271. Lf27:    SS1(Le28)
  272. Lf28:    SS1(Le29)
  273. Lf29:    SS1(Le30)
  274. Lf30:    SS1(Le31)
  275. Lf31:    SS1(Le32)
  276. Lf32:    addx    %o3,%o3,%o3
  277.     xor    %o0,-1,%o0
  278.     retl
  279.     st    %o3,[%o4]
  280.